<?php
/**
 * @author Евгений Чашин
 *
 */
class Zen_User
{
    /**
     * Возвращает массив с параметрами пользователя
     * @param $id int
     * @return array
     */
    static function getOne ($id)
    {
        if (! Zend_Registry::isRegistered('user_' . $id)) {
            $model=new Zen_List('user');
        	$table = $model->getTable();
            $res = $table->find($id)->current();
            if ($res) {
                $res = $res->toArray();
                Zend_Registry::set('user_' . $id, $res);
            } else {
                return FALSE;
            }
        } else {
            $res = Zend_Registry::get('user_' . $id);
        }
        return $res;
    }
    /**
     * Возвращает id текущего пользователя
     * @return int
     */
    static function getId ()
    {
        $session = new Zend_Session_Namespace('Zend_Auth');
        $cuser = $session->storage;
        if (! isset($cuser->id)) {
            return FALSE;
        } else
            return $cuser->id;
    }
    
	static function getCurrent ()
    {
        $session = new Zend_Session_Namespace('Zend_Auth');
        $cuser = $session->storage;
        if (! isset($cuser->id)) {
            return FALSE;
        } else
            return $cuser;
    }
    
    
    
    /**
     * Возвращает true если пользователь авторизовался false если нет
     * @return bool
     */
    static function isLoged ()
    {
        if (Zen_User::getId()) {
            return true;
        } else
            return false;
    }
    
    static function hashpass($pass){
        if($pass!="")
        {
            $salt='89f4nj34f894flk';
            $pepper='asdf893do3d983dh3';
            $arr1 = str_split($salt);
            $arr2 = str_split($pepper);
            $arr3 = str_split($pass);
            return md5(implode('', array_merge($arr1,$arr2,$arr3)));
        }else{
            return false;
        }
    }
    /**
     * Авторизация пользователя
     * @param $login string
     * @param $password string
     * @param $rem bool Запомнить на сайте
     * @hashpass $rem bool Зашифрованный пароль или нет
     * @return bool
     */
    static function login ($login, $password, $rem = false,$hashpass=true)
    {
        if($hashpass){
    		$password=Zen_User::hashpass($password);
        }
        $dbAdapter = Zend_Db_Table::getDefaultAdapter();
        $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
        $authAdapter->setTableName('user');
        $authAdapter->setIdentityColumn('login');
        $authAdapter->setCredentialColumn('pass');
        
        $authAdapter->setIdentity($login);
        $authAdapter->setCredential($password);
        $auth = Zend_Auth::getInstance();
        
        
        
        $result = $auth->authenticate($authAdapter);
        if ($result->isValid()) {
            $data = $authAdapter->getResultRowObject(null, 'pass');
            $auth->getStorage()->write($data);
            if ($rem == true) {
                Zend_Session::rememberMe();
            }
            return $data;
        } else
            return false;
    }
    /**
     * 
     * Выход с сайта
     * 
     */
    static function logout ()
    {
        Zend_Session::forgetMe();
        Zend_Auth::getInstance()->clearIdentity();
    }
    
 /**
  * Отправка сообщения с паролем
  * @param string $email
  * @return string|string
  */
    
static function getip()
{
  if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"),false))
    $ip = getenv("HTTP_CLIENT_IP");
  elseif (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), false))
    $ip = getenv("HTTP_X_FORWARDED_FOR");
  elseif (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), false))
    $ip = getenv("REMOTE_ADDR");
  elseif (!empty($_SERVER['REMOTE_ADDR']) && strcasecmp($_SERVER['REMOTE_ADDR'], false))
    $ip = $_SERVER['REMOTE_ADDR'];
  else
    $ip = false;
  if(preg_match('/\040/', $ip)){
  	$ip=explode(' ', $ip);
  	$ip=$ip[0];
  }
  
  return($ip);
}

	static function rem ($user_id)
    {
        $cnf = Zend_Registry::get('cnf');
        $user = Zen_User::getOne ($user_id);
        $view = new Zend_View();
        $view->setBasePath(APPLICATION_PATH . "/modules/communication/views/");
        $view->pass = $user['new_pass'];
        $view->login = $user['login'];
        $view->ip = self::getip();
        $view->domen = $cnf->domen;
        $view->hash = $user['new_pass_hash'];
        $text = $view->render('rem.phtml');
        $message = array("text" => $text , "subject" => $cnf->domen . " - Напоминание пароля" , "from" => "noreply@" . $cnf->domen , "to" => $user['email']);
        $email=new Communication_Model_Email();
        $id=$email->create($message);
        $email->send_messages($id);
        return true;
    }
}